#ifndef TELA_H_
#define TELA_H_

#include "../kisebo/Controlador.h"

/**
 * @class Tela Tela.h "src/console/Tela.h"
 * @brief Interface para controle das Telas.
 * A Classe possui alguns métodos que deverão ser utilizados, \n
 * para todas as telas que forem criadas no sistema.
*/
class Tela
{

protected:

	/**
	 * A Tela carrega uma instancia da classe Sistema, \n
	 * dessa forma todas as telas vão poder chamar os métodos e atributos \n
	 * que a classe de controle do projeto possuir.
	 * @see Sistema
	 */
	Controlador *Sistema;

	/**
	 * @fn Tela(Controlador* sys = NULL)
	 * @brief Construtor Tela da entidade.
	 * Esse método cria uma instancia da Tela carregando o controlador.
	*/
	Tela(Controlador* sys = NULL);

	/**
	 * @fn virtual ~Tela()
	 * @brief Destrutor da entidade.
	 * Utilizado para liberar espaço na mémoria, eliminando a instancia
	 * do objeto criado.
	*/
	virtual ~Tela();

	/**
	 * @fn virtual void Show()
	 * @brief Imprime o menu.
	 * O método imprime um menu de opções para o usuário, zn
	 * de acordo com o tipo do usuário logado.
	*/
	virtual void Show() = 0;

	/**
	 * @fn virtual void GetOpcao()
	 * @brief  Método para obter a opcao selecionada.
	 * O usuário seleciona uma opcao que deve ser armazenada e utilizada pelo SubmeteDado.
	*/
	virtual void GetOpcao() = 0;

	/**
	 * @fn virtual void SubmeteDado()
	 * @brief Método para verificar qual a ação a ser realizada.
	 * O método aciona uma ação de acordo com a opção selecionada.
	*/
	virtual void SubmeteDado() = 0;

};

#endif /*TELA_H_*/
